﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Persistencia;
using GestorDeFlotasModelo.Entities;
using Persistencia.Interfaces;

namespace GestorDeFlotasModelo.Factorias
{
    public class FactoriaFactura : Factoria, IIdentityFactory
    {
        private FactoriaFactura(TransaccionBase tran)
            : base(tran)
        {
        }
        

        public override string NombreTabla
        {
            get { return " NUESTRA_RUBIA_ES_MEJOR.Factura "; }
        }

        protected override IPersistibleModelo NuevoPersistible(HashTableNCSensitive htsNc)
        {
            return new Factura();
        }

        protected override string Id(HashTableNCSensitive hts)
        {
            return hts["Factura_Id"].ToString();
        }

        protected override HashTableNCSensitive ParametrosClave()
        {
            HashTableNCSensitive parameters = new HashTableNCSensitive();
            parameters.Add("Factura_Id",null);
            return parameters;

        }

        protected override HashTableNCSensitive ParametrosNoClave()
        {
            HashTableNCSensitive parameters = new HashTableNCSensitive();
            parameters.Add("Factura_Cliente", null);
            parameters.Add("Factura_Importe", null);
            parameters.Add("Factura_Fecha_Inicio", null);
            parameters.Add("Factura_Fecha_Fin", null);
            return parameters;
        }


        protected override Predicate<IPersistibleModelo> FiltroXId(string id)
        {
            return delegate(IPersistibleModelo iPer)
            {
                return ((Factura)iPer).Id == long.Parse(id);
            };
        }

        public Factura Nuevo(Cliente cliente, double importe, DateTime fechaInicio, DateTime fechaFin)
        {
            Factura factura = new Factura();
            factura.Cliente = cliente;
            factura.Importe = importe;
            factura.FechaFin = fechaFin;
            factura.FechaInicio = fechaInicio;
            base.Agregar(factura);

            return factura;
        }
    }
}
